/***************************************************************************
 * 文件名:BedManagerLocal.java<br>
 * 版本: <br>
 * 描述: <br>床位管理
 * 版权所有: <br>
 * //////////////////////////////////////////////////////// <br>
 * 创建者: robo<br>
 * 创建日期: 2010-12-14 <br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 **************************************************************************/
package com.sunwayhorizo.health.business.registries.place;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.base.IBaseManager;
import com.sunwayhorizo.health.business.dto.ResultsDTO;
import com.sunwayhorizo.health.business.dto.registries.BedDTO;
import com.sunwayhorizo.health.hl7.common.Hl7Exception;
import com.sunwayhorizo.health.hl7.datatypes.CS;
import com.sunwayhorizo.health.hl7.rim.Role;

@Local
public interface BedManagerLocal extends IBaseManager {
	
	/**
	 * 新增床位号
	 * @param  bedDTO        床位DTO
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO newBed(BedDTO bedDTO)throws Hl7Exception;
	
	/**
	 * 批量删除床位
	 * @param ids
	 * @return
	 * @throws Hl7Exception
	 */
	@SuppressWarnings("rawtypes")
	public ResultsDTO delBed(List ids)throws Hl7Exception;
	
	/**
	 * 更新床位
	 * @param  bedDTO
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO updateBed(BedDTO bedDTO)throws Hl7Exception;
	
	
	/**
	 * 根据工作组实体id查询该工作组下面非空的床位
	 * @param workGroupId 工作组实体id
	 * @return ResultsDTO
	 * @throws Hl7Exception
	 */
	public ResultsDTO findBedListByWorkGroupId(String workGroupId) throws Hl7Exception;
	
	/**
	 * 根据工作组实体id，状态查询该工作组下面的床位
	 * @param workGroupId 工作组实体id
	 * @param status 床位状态 可传入参数为约定好的
	 *  0：空床  1：占用   2：包床
	 * @return ResultsDTO
	 * @throws Hl7Exception
	 */
	public ResultsDTO findBedListByWorkGroupId(String workGroupId,String status) throws Hl7Exception;
	
	/**
	 * 验证病区下面床位是否唯一
	 * @param workGroupId 工作组实体id
	 * @param bedNo 床号
	 * @return ResultsDTO
	 * @throws Hl7Exception
	 */
	public ResultsDTO validateBedName(String workGroupId,String bedNo) throws Hl7Exception;
	
	
    /**
     * 根据科室查询下面所有工作组的床位
     * @param deptId 科室实体id
     * @param status 床位状态 0:未用 1 在用 2：包床
     * @return ResultsDTO
     * @throws Hl7Exception 
     */
	public ResultsDTO findBedListByDept(String deptId,String status)throws Hl7Exception ;
	
	
	
	
	/**
	 * 查询一个房间的所有的床位号(一房间最多只有6-10张床)
	 * @param roomId           房间号
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO findBedListByWardId(String roomId)throws Hl7Exception;

	
	/**
	 * 修改床位状态
	 * @param bedRole 床位角色
	 * @param status 床位状态 取自于vocabulary EntityStatus
	 * @throws Hl7Exception
	 */
	public void modifyBedStatus(Role bedRole,CS status) throws Hl7Exception;

	/**
	 * 创建床位
	 * @param bedDTO
	 * @return 床位Role
	 * @throws Hl7Exception
	 */
	public Role createBed(BedDTO bedDTO) throws Hl7Exception;
	


}


